// 封装axios
import axios from "axios";

// 创建axios实例
const service = axios.create({
  timeout: 12000000,
});

// 添加请求拦截器
service.interceptors.request.use(
  (config) => {
    // 在发送请求前做些什么
    // 比如把token放入请求头
    // 登录时就已经把token存到了cookie中
    // const token = cookie.get("token");
    // if (token) {
    //   config.headers.authorization = token;
    // }
    return config;
  },
  (error) => {
    // 对请求错误做些什么
    console.log(error);
    return Promise.reject(error);
  }
);

// 添加响应拦截器
service.interceptors.response.use(
  (response) => {
    // 2xx 范围内的状态码都会触发该函数
    // 对响应数据做点什么
    return response;
  },
  (error) => {
    // 超出 2xx范围的状态码都会触发该函数
    // 对响应错误做点什么
    console.log(error);
    if (error && error.response) {
      switch (error.response.status) {
        case 302:
          this.$message("接口重定向了！");
          break;
        case 400:
          this.$message("参数不正确！");
          break;
        case 401:
          this.$message({
            message: "登录过期，请重新登录",
            type: "warning",
          });
          break;
        case 403:
          this.$message("您没有权限操作！");
          break;
        case 404:
          this.$message("请求地址出错!");
          break; // 在正确域名下
        case 408:
          this.$message("请求超时！");
          break;
        case 409:
          this.$message("系统已存在相同数据！");
          break;
        case 500:
          this.$message("服务器内部错误！");
          break;
        case 501:
          this.$message("服务未实现！");
          break;
        case 502:
          this.$message("网关错误！");
          break;
        case 503:
          this.$message("服务不可用！");
          break;
        case 504:
          this.$message("服务暂时无法访问，请稍后再试！");
          break;
        case 505:
          this.$message("HTTP版本不受支持！");
          break;
        default:
          this.$message("异常问题，请联系管理员！");
          break;
      }
    }
    return Promise.reject(error);
  }
);

export default service;
